//package com.fowo.api.controller.purchase;
//
//import com.baomidou.mybatisplus.core.toolkit.Wrappers;
//import com.fowo.api.common.model.R;
//import com.fowo.api.controller.purchase.vo.ProcessProductDVo;
//import com.fowo.api.controller.purchase.vo.ProcessProductItemItemDVo;
//import com.fowo.api.entity.ProcessProductItemListItem;
//import com.fowo.api.model.process.product.ProcessProductVo;
//import com.fowo.api.model.process.product.item.ProcessProductItemItemVo;
//import com.fowo.api.model.process.product.item.ProcessProductItemVo;
//import com.fowo.api.model.process.product.item.list.item.ProcessProductItemListItemItemVo;
//import com.fowo.api.service.ProcessProductItemListItemService;
//import com.fowo.api.service.ProcessProductItemService;
//import com.fowo.api.service.ProcessProductService;
//import com.fowo.api.service.impl.ProcessProductItemListItemServiceImpl;
//import com.fowo.api.service.impl.ProcessProductItemServiceImpl;
//import com.fowo.api.service.impl.ProcessProductServiceImpl;
//import com.fowo.api.sys.model.NewSerialRequest;
//import com.fowo.api.sys.service.SysSerialService;
//import io.swagger.v3.oas.annotations.Operation;
//import org.springframework.beans.BeanUtils;
//import org.springframework.ui.context.Theme;
//import org.springframework.util.StringUtils;
//import org.springframework.validation.annotation.Validated;
//import org.springframework.web.bind.annotation.GetMapping;
//import org.springframework.web.bind.annotation.PathVariable;
//import org.springframework.web.bind.annotation.PostMapping;
//import org.springframework.web.bind.annotation.RequestBody;
//
//import javax.annotation.Resource;
//import java.util.ArrayList;
//import java.util.List;
//
//public class ProcessProductDController {
//
//    @Resource
//    private ProcessProductServiceImpl processProductService;
//    @Resource
//    protected ProcessProductItemServiceImpl processProductItemService;
//
//    @Resource
//    private ProcessProductItemListItemServiceImpl processProductItemListItemService;
//    @Resource
//    protected SysSerialService sysSerialService;
//
//
//    @Operation(summary = "获取详情")
//    @GetMapping("{id}")
//    public R<ProcessProductDVo> getVoById(@PathVariable Long id) throws Exception {
//        ProcessProductVo voById = processProductService.getVoById(id);
//        ProcessProductDVo processProductDVo=new ProcessProductDVo();
//        BeanUtils.copyProperties(voById,processProductDVo);
//         List<ProcessProductItemItemDVo> list=new ArrayList<>();
//        voById.getProcessProductItems().forEach(x->{
//            ProcessProductItemItemDVo ProcessProductItemItemDVo=new ProcessProductItemItemDVo();
//            BeanUtils.copyProperties(x,ProcessProductItemItemDVo);
//            //设置子表的子表信息
//            List<ProcessProductItemListItem> list1 = processProductItemListItemService.list(Wrappers.<ProcessProductItemListItem>query().lambda().eq(ProcessProductItemListItem::getParentId, x.getId()));
//            ProcessProductItemItemDVo.setProcessProductItemListItems(list1);
//            list.add(ProcessProductItemItemDVo);
//        });
//        return R.data(processProductDVo);
//    }
//
//    @PostMapping
//    public R<Long> create( @RequestBody ProcessProductDVo processProductDVo) throws Exception {
//        ProcessProductVo processProduct=new ProcessProductVo();
//        BeanUtils.copyProperties(processProductDVo,processProduct);
//        if (!StringUtils.hasText(processProduct.getProcessSn())) {
//            processProduct.setProcessSn(
//                    sysSerialService.getNewSerial(
//                            new NewSerialRequest(null, "ProcessProduct.processSn")
//                    )
//            );
//        }
//        boolean id = processProductService.save(processProduct);
//        processProductDVo.getProcessProductItemItemDVos().forEach(x->{
//            ProcessProductItemVo ProcessProductItemVo=new ProcessProductItemVo();
//            BeanUtils.copyProperties(x,ProcessProductItemVo);
//            List<ProcessProductItemListItemItemVo> processProductItemListItems= new ArrayList<>();
//            x.getProcessProductItemListItems().forEach(y->{
//                ProcessProductItemListItemItemVo ProcessProductItemListItem=new ProcessProductItemListItemItemVo();
//                BeanUtils.copyProperties(y,ProcessProductItemListItem);
//                processProductItemListItems.add(ProcessProductItemListItem);
//            });
//            ProcessProductItemVo.setProductId(processProduct.getId());
//            ProcessProductItemVo.setItemList(processProductItemListItems);
//            try {
//                processProductItemService.create(ProcessProductItemVo);
//            } catch (Exception e) {
//                throw  new RuntimeException("");
//            }
//        });
//        return R.data(null);
//    }
//    @PostMapping
//    public R<Long> updateForEdit( @RequestBody ProcessProductDVo processProductDVo) throws Exception {
//        ProcessProductVo processProduct=new ProcessProductVo();
//        BeanUtils.copyProperties(processProductDVo,processProduct);
//        boolean id = processProductService.update(processProduct);
//        processProductDVo.getProcessProductItemItemDVos().forEach(x->{
//            ProcessProductItemVo ProcessProductItemVo=new ProcessProductItemVo();
//            BeanUtils.copyProperties(x,ProcessProductItemVo);
//            List<ProcessProductItemListItemItemVo> processProductItemListItems= new ArrayList<>();
//            x.getProcessProductItemListItems().forEach(y->{
//                ProcessProductItemListItemItemVo ProcessProductItemListItem=new ProcessProductItemListItemItemVo();
//                BeanUtils.copyProperties(y,ProcessProductItemListItem);
//                processProductItemListItems.add(ProcessProductItemListItem);
//            });
//            ProcessProductItemVo.setProductId(processProduct.getId());
//            ProcessProductItemVo.setItemList(processProductItemListItems);
//            try {
//                processProductItemService.updateForEdit(ProcessProductItemVo);
//            } catch (Exception e) {
//                throw  new RuntimeException("");
//            }
//        });
//        return R.data(null);
//    }
//
//}
